<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>模拟super2</title>
</head>
<body>
<script>
  /*
  * 为什么我们在子类中可以使用super调用父类的构造函数,其实原理并不像我们想的那样使用this.__proto__.方法名
  * */


  /*
  * 这里虽然使用原型来代替super没问题
  * */
  let animal ={
    get(){
      console.log(1);
    }
  }

  let cat = {
    __proto__: animal,
    get(){
     /*
     * smallCat.get()进行调用的时候this是smallCat  this.__proto__是cat 就相当于cat一直在递归
     * 而不是我们想的去找cat的父类 但是如果这里使用super就不会出现这个问题，之所以出现这个问题是因为当前对象无法使用this.__proto__
     * 准确找到父类 为什么?因为在调用的时候每个对象中的this不是当前对象，而是子类，这就会造成循环调用的问题
     *
     *  */
      this.__proto__.get.call(this)
      console. log(2);
    }

  }

  let smallCat ={
    __proto__: cat,
    get(){
      this.__proto__.get.call(this)
      console.log(3);
    }
  }

  smallCat.get()
</script>
</body>
</html>